Jak na ScreeShot

Otázka od: Jiri Virt

1. 12. 2003 12:28

Jak udelat kopii obrazovky, ale ne pres klipboard??


Diky

Jirka

Odpovedá: Bronislav Klucka

1. 12. 2003 14:18


>
> Jak udelat kopii obrazovky, ale ne pres klipboard??
>
>
tato funkce ti vrati bitmapu, ktera obsahuej okno, chces-li obrazovku,
WinHandle =0

Brona


function PSGetWindowScrShot(WinHandle:HWND):TBitmap;
var bCanvas:TCanvas;
    BitRect:TRect;
begin
  result:=TBitmap.Create;
  if WinHandle=0 then
  begin
    result.Width:=Screen.Width;
    result.Height:=Screen.Height;
  end else
  begin
    GetClientRect(WinHandle,BitRect);
    result.Width:=BitRect.Right-BitRect.Left;
    result.Height:=BitRect.Bottom-BitRect.Top;
  end;
  BitRect:=rect(0,0,result.Width,result.Height);
  bCanvas:=TCanvas.create;
  bCanvas.Handle := GetDC(WinHandle);
  result.Canvas.CopyRect(BitRect,bCanvas,BitRect);
  bCanvas.Free;
end;


Odpovedá: Petr Vones

1. 12. 2003 14:40

From: "Jiri Virt" <virt@volny.cz>
> Jak udelat kopii obrazovky, ale ne pres klipboard??

Napriklad funkci ScreenShot v unitu JclGraphics:
http://sourceforge.net/project/showfiles.php?group_id=47514&release_id=118195

Petr Vones